(define (domain pick-and-place)
  (:requirements :strips :equality)
  (:predicates
    (Conf ?q)
    (Region ?r)
    (Connected ?q1 ?q2)
    (Contained ?q ?r)
    (AtConf ?q)
    (In ?r)
  )
  (:functions
    (Distance ?q1 ?q2)
  )
  (:action move
    :parameters (?q1 ?q2)
    :precondition (and (Connected ?q1 ?q2)
                       (AtConf ?q1))
    :effect (and (AtConf ?q2)
                 (not (AtConf ?q1))
             (increase (total-cost) (Distance ?q1 ?q2)))
  )
  (:derived (In ?r)
    (exists (?q) (and (Conf ?q) (Region ?r) (Contained ?q ?r)
                            (AtConf ?q)))
  )
)